import 'dart:async';
import 'package:get/get.dart';
import '../../../components/base/base_ctr.dart';
import '../../../components/http/network.dart';
import '../../../utils/AppData.dart';
import '../../../utils/Tools.dart';

class OperateSixPasswordCrt extends BaseController {
  String encodePhoneNumber = Tools.encryptPhoneNumber(AppData.phoneNumber!);

  String prePassword = '';

  String newPassword = '';

  String msgCode = '';

  bool isFinishStep1 = false;

  bool isCountingDown = false; // 用于表示是否正在倒计时

  int countdown = 60; // 倒计时时间，单位秒

  Timer? countdownTimer;

  // 之前的密码
  void updatePrePassword(String password) {
    prePassword = password;
    checkPassword(password);
  }

  // 当前的密码
  void updatePassword(String password) {
    newPassword = password;
    resetPasswordSubmit();
  }

  // 当前的验证码
  void updateMsgCode(String code) {
    msgCode = code;
    checkMsgCode(code);
  }

  /// 重置/忘记密码 提交
  void resetPasswordSubmit() {
    Network.editPassword(newPassword, newPassword, 1).then((value) {
      if (value) {
        Tools.showToast('修改成功');
        Get.back();
      }
    });
  }

  /// 获取验证码
  void fetchVerifyCode() {
    if (isCountingDown) return; // 如果正在倒计时，直接返回
    // 发送请求获取验证码
    Network.getMsgCode(AppData.phoneNumber ?? '', 'edit_pay_password').then((onValue) {
      // 在网络请求成功后启动倒计时
      if (onValue) {
        isCountingDown = true; // 开始倒计时
        startCountdown();
      } else {
        // 处理验证码请求失败的逻辑（例如提示错误）
        isCountingDown = false;
        update();
      }
    }).catchError((error) {
      // 请求失败的处理
      isCountingDown = false;
      update();
    });
  }

  ///密码验证
  Future<void> checkPassword(String password) async {
    Tools.showLoading();
    Network.validatePayPassword(password).then((value) {
      Tools.hideLoading();
      if (value == true) {
        isFinishStep1 = true;
        update();
      } else {
        Tools.showToast('密码错误');
      }
    }).catchError((onError) {
      Tools.hideLoading();
    });
  }

  /// 验证码验证
  void checkMsgCode(String msgCode) {
    Network.checkMsgCode(AppData.phoneNumber ?? '', msgCode, 'edit_pay_password').then((value) {
      if (value) {
        isFinishStep1 = true;
        update();
      }
    }).catchError((onError) {
      Tools.hideLoading();
    });
  }

  // 开始倒计时
  void startCountdown() {
    countdown = 60; // 重置倒计时
    update();
    countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
      if (countdown > 0) {
        countdown--;
      } else {
        stopCountdown();
      }
      update();
    });
  }

  // 停止倒计时
  void stopCountdown() {
    if (countdownTimer != null) {
      countdownTimer?.cancel();
    }
    isCountingDown = false;
    update();
  }

  @override
  void onClose() {
    super.onClose();
    // 页面关闭时清空状态
    prePassword = '';
    newPassword = '';
    msgCode = '';
    isFinishStep1 = false;
    if (countdownTimer != null) {
      countdownTimer!.cancel();
    }
    countdown = 60;
  }
}
